package advanced进阶;

/**
 * 在一些不必要的地方给加了锁，编译器或者JVM会帮
 * StringBuffer是一个线程安全
 * 多个线程去修改StringBuffer的实例的时候会有锁竞争，如果竞争不到锁就会阻塞
 * StringBuilder非线程安全
 *
 *
 * 锁粗化
 * 粗细是指代码的粒度的粗细
 * 加锁的代码多少
 * 如果加锁的代码非常多，就认为这个锁粒度比较粗
 * 如果一段代码我们频繁加锁，编译器就会帮我们进行锁的粗化
 *
 */
public class 锁消除and锁粗化 {
    static StringBuffer buffer = new StringBuffer();
    public static void main(String[] args) {
        synchronized(buffer){
            StringBuffer sb = new StringBuffer();
            sb.append("a");
            sb.append("b");
            sb.append("c");
        }
    }
}
